/**
 * 
 */
package com.shine.icis.blo.imp;

import java.util.List;

import com.shine.cotrun.exp.Export;
import com.shine.cotrun.exp.ExportConf;
import com.shine.cotrun.exp.ExportFactory;
import com.shine.cotrun.sql.QueryParameters;
import com.shine.cotrun.web.comm.ListPage;
import com.shine.icis.blo.IMetadataCheckLogService;
import com.shine.icis.dao.IMetadataCheckLogDAO;
import com.shine.icis.hbean.MetadataCheckItem;
import com.shine.icis.hbean.MetadataCheckLog;

/**
 * 元数据质量检查日志的查询
 * @author zhangxr  2010-10-22
 * */
public class MetadataCheckLogService implements IMetadataCheckLogService {
	
	private IMetadataCheckLogDAO metadataCheckDAO;


	public void setMetadataCheckDAO(IMetadataCheckLogDAO metadataCheckDAO) {
		this.metadataCheckDAO = metadataCheckDAO;
	}
	
	/**
	 * 元数据质量检查日志类别，状态为启用
	 * @author zhangxr  2010-10-22
	 * */
	@Override
	public List<MetadataCheckItem> getMetadataCheckItems(char enableFlag) {
		return this.metadataCheckDAO.findMetadataCheckItems(enableFlag);
	}
	
	/**
	 * 查询元数据质量检查日志
	 * @author zhangxr  2010-10-22
	 * @param qp
	 * */
	@Override
	public ListPage<MetadataCheckLog> queryMetadataCheckLogPage(QueryParameters qp) {
		if (qp == null) {
			throw new IllegalArgumentException();
		}
		return this.metadataCheckDAO.findMetadataCheckLogPage(qp);
	}
	/**
	 * 元数据质量检查日志导出Excel
	 * @author zhangxr 2010-12-27
	 * */
	@Override
	public String csExpDataMetadataCheckLog(QueryParameters qp, String dir, String expType) {
		if (qp == null) {
			throw new IllegalArgumentException();
		}
		//初始化配置信息
		ExportConf cfg = new ExportConf();
		cfg.setExpToDir(dir);
		cfg.setExpFileName("元数据质量检查日志");
		cfg.addField("级别", "prepLevelText", String.class, 10);
		cfg.addField("操作日期", "formatOperDate", String.class, 10);
		cfg.addField("操作时间", "formatOperTime", String.class, 8);
		cfg.addField("类别", "itemName", String.class, 20);
		cfg.addField("状态", "runStatusText", String.class, 10);
		cfg.addField("信息情况", "resultMsg", String.class, 256);

		Export<MetadataCheckLog> exp = ExportFactory.createInstance(expType, cfg);
		try {
			exp.init();//初始化工作
			
			//添加额处查询条件
			qp.setPageNo(1);
			qp.setPageSize(10000);
			
			ListPage<MetadataCheckLog> page = this.metadataCheckDAO.findMetadataCheckLogPage(qp);//查第一页
			//第一页写到文件
			exp.export(page.getDataList());
			if (page.getTotalPageCount() > 1) {
				for (int i = 2; i <= page.getTotalPageCount(); i++) {
					qp.setPageNo(i);
					page = this.metadataCheckDAO.findMetadataCheckLogPage(qp);//查第i页
					//第i页写到文件
					exp.export(page.getDataList());
				}
			}
		} catch(Exception e) {
			e.printStackTrace();
		} finally {
			//结束写入
			exp.end();
		}
		return exp.getFileName();//返回文件名（含扩展名）
	}
}
